package com.xiaoleilu.hutool.http;

/**
 * Http 头域
 * @author Looly
 *
 */
public enum Header {
	
	//------------------------------------------------------------- 通用头域
	/**提供日期和时间标志,说明报文是什么时间创建的*/
	DATE("Date"),
	/**允许客户端和服务器指定与请求/响应连接有关的选项*/
	CONNECTION("Connection"),
	/**给出发送端使用的MIME版本*/
	MIME_VERSION("MIME-Version"),
	/**如果报文采用了分块传输编码(chunked transfer encoding) 方式,就可以用这个首部列出位于报文拖挂(trailer)部分的首部集合*/
	TRAILER("Trailer"),
	/**告知接收端为了保证报文的可靠传输,对报文采用了什么编码方式*/
	TRANSFER_ENCODING("Transfer-Encoding"),
	/**给出了发送端可能想要"升级"使用的新版本和协议*/
	UPGRADE("Upgrade"),
	/**显示了报文经过的中间节点*/
	VIA("Via"),
	/**指定请求和响应遵循的缓存机制*/
	CACHE_CONTROL("Cache-Control"),
	/**用来包含实现特定的指令，最常用的是Pragma:no-cache。在HTTP/1.1协议中，它的含义和Cache- Control:no-cache相同*/
	PRAGMA("Pragma"),
	/**请求表示提交内容类型或返回返回内容的MIME类型*/
	CONTENT_TYPE("Content-Type"),
	
	//------------------------------------------------------------- 请求头域
	/**指定请求资源的Intenet主机和端口号，必须表示请求url的原始服务器或网关的位置。HTTP/1.1请求必须包含主机头域，否则系统会以400状态码返回*/
	HOST("Host"),
	/**允许客户端指定请求uri的源资源地址，这可以允许服务器生成回退链表，可用来登陆、优化cache等。他也允许废除的或错误的连接由于维护的目的被 追踪。如果请求的uri没有自己的uri地址，Referer不能被发送。如果指定的是部分uri地址，则此地址应该是一个相对地址*/
	REFERER("Referer"),
	/**HTTP客户端运行的浏览器类型的详细信息。通过该头部信息，web服务器可以判断到当前HTTP请求的客户端浏览器类别*/
	USER_AGENT("User-Agent"),
	/**指定客户端能够接收的内容类型，内容类型中的先后次序表示客户端接收的先后次序*/
	ACCEPT("Accept"),
	/**指定HTTP客户端浏览器用来展示返回信息所优先选择的语言*/
	ACCEPT_LANGUAGE("Accept-Language"),
	/**指定客户端浏览器可以支持的web服务器返回内容压缩编码类型*/
	ACCEPT_ENCODING("Accept-Encoding"),
	/**浏览器可以接受的字符编码集*/
	ACCEPT_CHARSET("Accept-Charset"),
	/**HTTP请求发送时，会把保存在该请求域名下的所有cookie值一起发送给web服务器*/
	COOKIE("Cookie"),
	/**请求的内容长度*/
	CONTENT_LENGTH("Content-Length"),
	
	//------------------------------------------------------------- 响应头域
	/**Cookie*/
	SET_COOKIE("Set-Cookie"),
	/**Content-Encoding*/
	CONTENT_ENCODING("Content-Encoding"),
	/**ETag*/
	ETAG("ETag"),
	/** 重定向指示到的URL */
	LOCATION("Location");
	
	private String value;
	private Header(String value) {
		this.value = value;
	}
	
	@Override
	public String toString() {
		return value;
	}
}
